package com.marketing.tenant.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 权限校验注解
 * 用于标记需要进行权限验证的方法
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequirePermission {
    
    /**
     * 需要的权限编码
     * 支持多个权限，任意一个满足即可通过
     */
    String[] value() default {};
    
    /**
     * 需要的角色编码
     * 支持多个角色，任意一个满足即可通过
     */
    String[] roles() default {};
    
    /**
     * 是否需要登录（有效的token）
     * 默认为true
     */
    boolean requireLogin() default true;
    
    /**
     * 权限描述
     */
    String description() default "";
}